package org.example.rubbish.service;

import jakarta.servlet.http.HttpServletRequest;
import org.example.rubbish.common.PageResult;
import org.example.rubbish.entity.AdminUser;
import org.example.rubbish.vo.AdminLoginResult;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.util.List;

public interface AdminUserService extends UserDetailsService {

    /**
     * 管理员登录
     */
    AdminLoginResult login(String username, String password, HttpServletRequest request);

    /**
     * 创建管理员用户
     */
    AdminUser createAdminUser(AdminUser adminUser);

    /**
     * 获取所有管理员
     */

    /**
     * 根据ID获取管理员
     */
    AdminUser getAdminById(Long id);

    /**
     * 软删除管理员
     */
    void softDeleteAdmin(Long id);

    /**
     * 更新管理员状态
     */
    void updateStatus(Long id, Integer status);

    /**
     * 根据用户名获取管理员
     */
    AdminUser getAdminByUsername(String username);

    /**
     * 更新管理员信息
     */
    AdminUser updateAdminUser(AdminUser adminUser);

    /**
     * 修改密码
     */
    void changePassword(Long id, String newPassword);

    /**
     * 验证管理员权限
     */
    boolean hasPermission(Long adminId, String permission);

    /**
     * 验证当前密码
     */
    boolean verifyCurrentPassword(Long id, String currentPassword);

    //分页查询管理员
    PageResult<AdminUser> getAdminsWithPagination(Integer page, Integer size, String keyword);
}